Overview

This script is aimed at showing how the Principal Components Analysis (PCA) behaves for sinusoidal patterned data. The idea is that if the gene patterns have high signal to noise variation, then the PC1 vs PC2 plot would be close to a circle. The more we add noise and randomness to the sinusoidal patterns, the less obvious the circular pattern of the PCs would tend to be.

Simulation Example

We present a non-sinusoidal gene patterns scenario now.

library(cellcycleR)
library(wavethresh)
## Loading required package: MASS
## WaveThresh: R wavelet software, release 4.6.6, installed
## 
## Copyright Guy Nason and others 1993-2013
## 
## Note: nlevels has been renamed to nlevelsWT
G <- 100;
num_cells <- 256;
amp_genes <- rep(10, G);
phi_genes <- rep(c(2,4,6,8), each=G/4);
sigma_genes <- rchisq(G, 0.01);
cell_times_sim <- seq(0,2*pi, length.out=num_cells);
cycle_data <- sim_sinusoidal_cycle(G, amp_genes, phi_genes, sigma_genes, cell_times_sim);

celltime_levels <- 256;

sample_reorder <- sample(1:num_cells,num_cells, replace=FALSE);
cell_times_reorder <- cell_times_sim[sample_reorder];
cycle_data_reorder <- cycle_data[sample_reorder,];

We perform PCA on the reordered data.

pca_cycle <- prcomp(cycle_data_reorder, center=TRUE, scale. = TRUE);
plot(pca_cycle$x[,1], pca_cycle$x[,2], pch=20, lwd=0.01)

Note the PCA maps the points on the circle. We now apply sinusoidal cellcycleR on the data.

system.time(out_sinusoidal <- sin_cell_ordering_class(cycle_data_reorder, celltime_levels = 256, num_iter=100))
## The loglikelihood after iter 1 is: -85672.7623047 
## The loglikelihood after iter 2 is: -67708.8739522 
## The loglikelihood after iter 3 is: -15023.1765156 
## The loglikelihood after iter 4 is: 17631.2152362 
## The loglikelihood after iter 5 is: 28039.7864284 
## The loglikelihood after iter 6 is: 51571.7800365 
## The loglikelihood after iter 7 is: 741912.131013 
## The loglikelihood after iter 8 is: 741912.131013 
## The loglikelihood after iter 9 is: 741912.131013 
## The loglikelihood after iter 10 is: 741912.131013 
## The loglikelihood after iter 11 is: 741912.131013 
## The loglikelihood after iter 12 is: 741912.131013 
## The loglikelihood after iter 13 is: 741912.131013 
## The loglikelihood after iter 14 is: 741912.131013 
## The loglikelihood after iter 15 is: 741912.131013 
## The loglikelihood after iter 16 is: 741912.131013 
## The loglikelihood after iter 17 is: 741912.131013 
## The loglikelihood after iter 18 is: 741912.131013 
## The loglikelihood after iter 19 is: 741912.131013 
## The loglikelihood after iter 20 is: 741912.131013 
## The loglikelihood after iter 21 is: 741912.131013 
## The loglikelihood after iter 22 is: 741912.131013 
## The loglikelihood after iter 23 is: 741912.131013 
## The loglikelihood after iter 24 is: 741912.131013 
## The loglikelihood after iter 25 is: 741912.131013 
## The loglikelihood after iter 26 is: 741912.131013 
## The loglikelihood after iter 27 is: 741912.131013 
## The loglikelihood after iter 28 is: 741912.131013 
## The loglikelihood after iter 29 is: 741912.131013 
## The loglikelihood after iter 30 is: 741912.131013 
## The loglikelihood after iter 31 is: 741912.131013 
## The loglikelihood after iter 32 is: 741912.131013 
## The loglikelihood after iter 33 is: 741912.131013 
## The loglikelihood after iter 34 is: 741912.131013 
## The loglikelihood after iter 35 is: 741912.131013 
## The loglikelihood after iter 36 is: 741912.131013 
## The loglikelihood after iter 37 is: 741912.131013 
## The loglikelihood after iter 38 is: 741912.131013 
## The loglikelihood after iter 39 is: 741912.131013 
## The loglikelihood after iter 40 is: 741912.131013 
## The loglikelihood after iter 41 is: 741912.131013 
## The loglikelihood after iter 42 is: 741912.131013 
## The loglikelihood after iter 43 is: 741912.131013 
## The loglikelihood after iter 44 is: 741912.131013 
## The loglikelihood after iter 45 is: 741912.131013 
## The loglikelihood after iter 46 is: 741912.131013 
## The loglikelihood after iter 47 is: 741912.131013 
## The loglikelihood after iter 48 is: 741912.131013 
## The loglikelihood after iter 49 is: 741912.131013 
## The loglikelihood after iter 50 is: 741912.131013 
## The loglikelihood after iter 51 is: 741912.131013 
## The loglikelihood after iter 52 is: 741912.131013 
## The loglikelihood after iter 53 is: 741912.131013 
## The loglikelihood after iter 54 is: 741912.131013 
## The loglikelihood after iter 55 is: 741912.131013 
## The loglikelihood after iter 56 is: 741912.131013 
## The loglikelihood after iter 57 is: 741912.131013 
## The loglikelihood after iter 58 is: 741912.131013 
## The loglikelihood after iter 59 is: 741912.131013 
## The loglikelihood after iter 60 is: 741912.131013 
## The loglikelihood after iter 61 is: 741912.131013 
## The loglikelihood after iter 62 is: 741912.131013 
## The loglikelihood after iter 63 is: 741912.131013 
## The loglikelihood after iter 64 is: 741912.131013 
## The loglikelihood after iter 65 is: 741912.131013 
## The loglikelihood after iter 66 is: 741912.131013 
## The loglikelihood after iter 67 is: 741912.131013 
## The loglikelihood after iter 68 is: 741912.131013 
## The loglikelihood after iter 69 is: 741912.131013 
## The loglikelihood after iter 70 is: 741912.131013 
## The loglikelihood after iter 71 is: 741912.131013 
## The loglikelihood after iter 72 is: 741912.131013 
## The loglikelihood after iter 73 is: 741912.131013 
## The loglikelihood after iter 74 is: 741912.131013 
## The loglikelihood after iter 75 is: 741912.131013 
## The loglikelihood after iter 76 is: 741912.131013 
## The loglikelihood after iter 77 is: 741912.131013 
## The loglikelihood after iter 78 is: 741912.131013 
## The loglikelihood after iter 79 is: 741912.131013 
## The loglikelihood after iter 80 is: 741912.131013 
## The loglikelihood after iter 81 is: 741912.131013 
## The loglikelihood after iter 82 is: 741912.131013 
## The loglikelihood after iter 83 is: 741912.131013 
## The loglikelihood after iter 84 is: 741912.131013 
## The loglikelihood after iter 85 is: 741912.131013 
## The loglikelihood after iter 86 is: 741912.131013 
## The loglikelihood after iter 87 is: 741912.131013 
## The loglikelihood after iter 88 is: 741912.131013 
## The loglikelihood after iter 89 is: 741912.131013 
## The loglikelihood after iter 90 is: 741912.131013 
## The loglikelihood after iter 91 is: 741912.131013 
## The loglikelihood after iter 92 is: 741912.131013 
## The loglikelihood after iter 93 is: 741912.131013 
## The loglikelihood after iter 94 is: 741912.131013 
## The loglikelihood after iter 95 is: 741912.131013 
## The loglikelihood after iter 96 is: 741912.131013 
## The loglikelihood after iter 97 is: 741912.131013 
## The loglikelihood after iter 98 is: 741912.131013 
## The loglikelihood after iter 99 is: 741912.131013 
## The loglikelihood after iter 100 is: 741912.131013
##    user  system elapsed 
## 143.295  50.344  63.041

We plot the radial plots first.

library(plotrix)
## Warning: package 'plotrix' was built under R version 3.2.3
library(RColorBrewer)
radial.plot(lengths=1:length(out_sinusoidal$cell_times),radial.pos=out_sinusoidal$cell_times[order(cell_times_reorder)],
            line.col=colorRampPalette(brewer.pal(9,"Blues"))(length(out_sinusoidal$cell_times)), lwd=2)

We plot the patterns for two genes (for arbitrary indices)

plot(cycle_data_reorder[order(out_sinusoidal$cell_times),1], type="l")

plot(cycle_data[,1], type="l")

plot(cycle_data_reorder[order(out_sinusoidal$cell_times),60], type="l")

plot(cycle_data[,60], type="l")

Now we rank the cells based on the cell times estimated from sinusoidal cellcycleR and then plot the ranks against the ranks based on the first PC.

plot(rank(out_sinusoidal$cell_times), rank(pca_cycle$x[,1]), xlab="sin. cellcycleR rank", ylab="pca 1 rank", pch=20, lwd=0.5, cex=1, col="red")

plot(rank(out_sinusoidal$cell_times), rank(pca_cycle$x[,2]), xlab="sin. cellcycleR rank", ylab="pca 2 rank", pch=20, lwd=0.5, cex=1, col="red")

Simulation example 2

library(cellcycleR)
library(wavethresh)

G <- 100;
num_cells <- 256;
amp_genes <- rep(1, G);
phi_genes <- rep(c(2,4,6,8), each=G/4);
sigma_genes <- rchisq(G, 3);
cell_times_sim <- seq(0,2*pi, length.out=num_cells);
cycle_data <- sim_sinusoidal_cycle(G, amp_genes, phi_genes, sigma_genes, cell_times_sim);

celltime_levels <- 256;

sample_reorder <- sample(1:num_cells,num_cells, replace=FALSE);
cell_times_reorder <- cell_times_sim[sample_reorder];
cycle_data_reorder <- cycle_data[sample_reorder,];

We perform PCA on the reordered data.

pca_cycle <- prcomp(cycle_data_reorder, center=TRUE, scale. = TRUE);
plot(pca_cycle$x[,1], pca_cycle$x[,2], pch=20, lwd=0.01)

We apply sinusoidal cellcycleR

system.time(out_sinusoidal <- sin_cell_ordering_class(cycle_data_reorder, celltime_levels = 256, num_iter=100))
## The loglikelihood after iter 1 is: -58611.4958648 
## The loglikelihood after iter 2 is: -56413.6055043 
## The loglikelihood after iter 3 is: -54978.0403917 
## The loglikelihood after iter 4 is: -54578.183151 
## The loglikelihood after iter 5 is: -54434.4323536 
## The loglikelihood after iter 6 is: -54342.5257462 
## The loglikelihood after iter 7 is: -54299.6584154 
## The loglikelihood after iter 8 is: -54271.385246 
## The loglikelihood after iter 9 is: -54234.1434749 
## The loglikelihood after iter 10 is: -54210.388618 
## The loglikelihood after iter 11 is: -54181.9970607 
## The loglikelihood after iter 12 is: -54154.2826096 
## The loglikelihood after iter 13 is: -54148.8212078 
## The loglikelihood after iter 14 is: -54125.9484891 
## The loglikelihood after iter 15 is: -54114.5530554 
## The loglikelihood after iter 16 is: -54125.303608 
## The loglikelihood after iter 17 is: -54092.6221762 
## The loglikelihood after iter 18 is: -54088.5560988 
## The loglikelihood after iter 19 is: -54076.5843512 
## The loglikelihood after iter 20 is: -54057.294373 
## The loglikelihood after iter 21 is: -54051.0592018 
## The loglikelihood after iter 22 is: -54053.7366846 
## The loglikelihood after iter 23 is: -54031.773891 
## The loglikelihood after iter 24 is: -54012.3734803 
## The loglikelihood after iter 25 is: -54016.9583597 
## The loglikelihood after iter 26 is: -54024.2592673 
## The loglikelihood after iter 27 is: -54017.1193158 
## The loglikelihood after iter 28 is: -54002.1971407 
## The loglikelihood after iter 29 is: -54010.1517654 
## The loglikelihood after iter 30 is: -54011.8560903 
## The loglikelihood after iter 31 is: -54002.5434982 
## The loglikelihood after iter 32 is: -53985.618166 
## The loglikelihood after iter 33 is: -53978.9862828 
## The loglikelihood after iter 34 is: -53965.7930605 
## The loglikelihood after iter 35 is: -53966.155483 
## The loglikelihood after iter 36 is: -53951.4441809 
## The loglikelihood after iter 37 is: -53950.6612537 
## The loglikelihood after iter 38 is: -53941.3373646 
## The loglikelihood after iter 39 is: -53945.9520238 
## The loglikelihood after iter 40 is: -53930.8916624 
## The loglikelihood after iter 41 is: -53907.8442743 
## The loglikelihood after iter 42 is: -53898.1963317 
## The loglikelihood after iter 43 is: -53888.865873 
## The loglikelihood after iter 44 is: -53884.7330328 
## The loglikelihood after iter 45 is: -53874.3632271 
## The loglikelihood after iter 46 is: -53874.8873377 
## The loglikelihood after iter 47 is: -53869.1559199 
## The loglikelihood after iter 48 is: -53870.1983284 
## The loglikelihood after iter 49 is: -53876.0437198 
## The loglikelihood after iter 50 is: -53863.1157753 
## The loglikelihood after iter 51 is: -53853.0857998 
## The loglikelihood after iter 52 is: -53854.3100363 
## The loglikelihood after iter 53 is: -53862.4602708 
## The loglikelihood after iter 54 is: -53850.9132134 
## The loglikelihood after iter 55 is: -53836.689339 
## The loglikelihood after iter 56 is: -53827.8314961 
## The loglikelihood after iter 57 is: -53837.412105 
## The loglikelihood after iter 58 is: -53855.5710735 
## The loglikelihood after iter 59 is: -53854.0867994 
## The loglikelihood after iter 60 is: -53837.2383482 
## The loglikelihood after iter 61 is: -53848.1498964 
## The loglikelihood after iter 62 is: -53867.0174382 
## The loglikelihood after iter 63 is: -53883.4093724 
## The loglikelihood after iter 64 is: -53882.6486133 
## The loglikelihood after iter 65 is: -53879.9617893 
## The loglikelihood after iter 66 is: -53880.9339883 
## The loglikelihood after iter 67 is: -53878.9888224 
## The loglikelihood after iter 68 is: -53860.5766439 
## The loglikelihood after iter 69 is: -53839.4894446 
## The loglikelihood after iter 70 is: -53822.0298115 
## The loglikelihood after iter 71 is: -53853.6928886 
## The loglikelihood after iter 72 is: -53842.3708116 
## The loglikelihood after iter 73 is: -53850.874674 
## The loglikelihood after iter 74 is: -53834.9320963 
## The loglikelihood after iter 75 is: -53852.4557356 
## The loglikelihood after iter 76 is: -53853.7286896 
## The loglikelihood after iter 77 is: -53863.0139401 
## The loglikelihood after iter 78 is: -53871.4678636 
## The loglikelihood after iter 79 is: -53861.1912496 
## The loglikelihood after iter 80 is: -53867.552689 
## The loglikelihood after iter 81 is: -53869.1050987 
## The loglikelihood after iter 82 is: -53883.1769338 
## The loglikelihood after iter 83 is: -53877.8944892 
## The loglikelihood after iter 84 is: -53855.3797784 
## The loglikelihood after iter 85 is: -53880.7845135 
## The loglikelihood after iter 86 is: -53885.8465594 
## The loglikelihood after iter 87 is: -53871.1903555 
## The loglikelihood after iter 88 is: -53859.0808141 
## The loglikelihood after iter 89 is: -53860.9878231 
## The loglikelihood after iter 90 is: -53852.5521068 
## The loglikelihood after iter 91 is: -53855.7627066 
## The loglikelihood after iter 92 is: -53850.5252012 
## The loglikelihood after iter 93 is: -53869.3166477 
## The loglikelihood after iter 94 is: -53854.778896 
## The loglikelihood after iter 95 is: -53850.5241134 
## The loglikelihood after iter 96 is: -53854.8478382 
## The loglikelihood after iter 97 is: -53859.5021862 
## The loglikelihood after iter 98 is: -53842.8767069 
## The loglikelihood after iter 99 is: -53835.5897812 
## The loglikelihood after iter 100 is: -53835.7277772
##    user  system elapsed 
## 148.708  56.560  68.978

We plot the radial plots first.

library(plotrix)
library(RColorBrewer)
radial.plot(lengths=1:length(out_sinusoidal$cell_times),radial.pos=out_sinusoidal$cell_times[order(cell_times_reorder)],
            line.col=colorRampPalette(brewer.pal(9,"Blues"))(length(out_sinusoidal$cell_times)), lwd=2)

We plot the patterns for two genes (for arbitrary indices)

plot(cycle_data_reorder[order(out_sinusoidal$cell_times),1], type="l")

plot(cycle_data[,1], type="l")

plot(cycle_data_reorder[order(out_sinusoidal$cell_times),60], type="l")

plot(cycle_data[,60], type="l")

Now we rank the cells based on the cell times estimated from sinusoidal cellcycleR and then plot the ranks against the ranks based on the first PC.

plot(rank(out_sinusoidal$cell_times), rank(pca_cycle$x[,1]), xlab="sin. cellcycleR rank", ylab="pca 1 rank", pch=20, lwd=0.5, cex=1, col="red")

plot(rank(out_sinusoidal$cell_times), rank(pca_cycle$x[,2]), xlab="sin. cellcycleR rank", ylab="pca 2 rank", pch=20, lwd=0.5, cex=1, col="red")

Simulation example 3

library(cellcycleR)
library(wavethresh)

G <- 100;
num_cells <- 256;
amp_genes <- rep(1, G);
phi_genes <- rep(c(2,4,6,8), each=G/4);
sigma_genes <- rchisq(G, 6);
cell_times_sim <- seq(0,2*pi, length.out=num_cells);
cycle_data <- sim_sinusoidal_cycle(G, amp_genes, phi_genes, sigma_genes, cell_times_sim);

celltime_levels <- 256;

sample_reorder <- sample(1:num_cells,num_cells, replace=FALSE);
cell_times_reorder <- cell_times_sim[sample_reorder];
cycle_data_reorder <- cycle_data[sample_reorder,];

We perform PCA on the reordered data.

pca_cycle <- prcomp(cycle_data_reorder, center=TRUE, scale. = TRUE);
plot(pca_cycle$x[,1], pca_cycle$x[,2], pch=20, lwd=0.01)

We apply sinusoidal cellcycleR

system.time(out_sinusoidal <- sin_cell_ordering_class(cycle_data_reorder, celltime_levels = 256, num_iter=100))
## The loglikelihood after iter 1 is: -77447.2202861 
## The loglikelihood after iter 2 is: -77301.3246607 
## The loglikelihood after iter 3 is: -77151.499472 
## The loglikelihood after iter 4 is: -77068.6784461 
## The loglikelihood after iter 5 is: -76987.9883778 
## The loglikelihood after iter 6 is: -76945.5253769 
## The loglikelihood after iter 7 is: -76921.1729975 
## The loglikelihood after iter 8 is: -76897.511428 
## The loglikelihood after iter 9 is: -76891.6419952 
## The loglikelihood after iter 10 is: -76890.6160194 
## The loglikelihood after iter 11 is: -76931.5369026 
## The loglikelihood after iter 12 is: -76905.4278415 
## The loglikelihood after iter 13 is: -76905.7761708 
## The loglikelihood after iter 14 is: -76912.7223798 
## The loglikelihood after iter 15 is: -76885.6669825 
## The loglikelihood after iter 16 is: -76941.6996247 
## The loglikelihood after iter 17 is: -76900.3244756 
## The loglikelihood after iter 18 is: -76924.1154606 
## The loglikelihood after iter 19 is: -76910.695061 
## The loglikelihood after iter 20 is: -76885.1487319 
## The loglikelihood after iter 21 is: -76900.0183056 
## The loglikelihood after iter 22 is: -76895.25541 
## The loglikelihood after iter 23 is: -76906.7290698 
## The loglikelihood after iter 24 is: -76886.1960745 
## The loglikelihood after iter 25 is: -76911.1900025 
## The loglikelihood after iter 26 is: -76896.7971689 
## The loglikelihood after iter 27 is: -76904.5666192 
## The loglikelihood after iter 28 is: -76918.8795285 
## The loglikelihood after iter 29 is: -76911.7324325 
## The loglikelihood after iter 30 is: -76911.8321982 
## The loglikelihood after iter 31 is: -76906.5336566 
## The loglikelihood after iter 32 is: -76890.0942058 
## The loglikelihood after iter 33 is: -76910.0210149 
## The loglikelihood after iter 34 is: -76900.2926228 
## The loglikelihood after iter 35 is: -76912.9344616 
## The loglikelihood after iter 36 is: -76905.4315244 
## The loglikelihood after iter 37 is: -76897.2479561 
## The loglikelihood after iter 38 is: -76889.1393745 
## The loglikelihood after iter 39 is: -76893.0229696 
## The loglikelihood after iter 40 is: -76905.3051021 
## The loglikelihood after iter 41 is: -76902.4635848 
## The loglikelihood after iter 42 is: -76918.2200913 
## The loglikelihood after iter 43 is: -76904.0462809 
## The loglikelihood after iter 44 is: -76916.7224124 
## The loglikelihood after iter 45 is: -76917.4673993 
## The loglikelihood after iter 46 is: -76904.3731275 
## The loglikelihood after iter 47 is: -76919.3036217 
## The loglikelihood after iter 48 is: -76901.7789887 
## The loglikelihood after iter 49 is: -76893.996035 
## The loglikelihood after iter 50 is: -76893.3424175 
## The loglikelihood after iter 51 is: -76929.6831943 
## The loglikelihood after iter 52 is: -76895.6622773 
## The loglikelihood after iter 53 is: -76894.1513668 
## The loglikelihood after iter 54 is: -76910.7642887 
## The loglikelihood after iter 55 is: -76910.0086527 
## The loglikelihood after iter 56 is: -76899.2118863 
## The loglikelihood after iter 57 is: -76892.3697798 
## The loglikelihood after iter 58 is: -76882.0938879 
## The loglikelihood after iter 59 is: -76903.0394192 
## The loglikelihood after iter 60 is: -76905.2511068 
## The loglikelihood after iter 61 is: -76902.9852711 
## The loglikelihood after iter 62 is: -76919.7675726 
## The loglikelihood after iter 63 is: -76923.6556704 
## The loglikelihood after iter 64 is: -76924.8465421 
## The loglikelihood after iter 65 is: -76927.3101476 
## The loglikelihood after iter 66 is: -76910.0602386 
## The loglikelihood after iter 67 is: -76913.0478871 
## The loglikelihood after iter 68 is: -76896.7417615 
## The loglikelihood after iter 69 is: -76905.9575459 
## The loglikelihood after iter 70 is: -76919.0736054 
## The loglikelihood after iter 71 is: -76911.5866631 
## The loglikelihood after iter 72 is: -76883.3735904 
## The loglikelihood after iter 73 is: -76906.8594949 
## The loglikelihood after iter 74 is: -76937.7821266 
## The loglikelihood after iter 75 is: -76904.475899 
## The loglikelihood after iter 76 is: -76896.0721465 
## The loglikelihood after iter 77 is: -76895.7709536 
## The loglikelihood after iter 78 is: -76909.5125653 
## The loglikelihood after iter 79 is: -76910.5546969 
## The loglikelihood after iter 80 is: -76915.5699379 
## The loglikelihood after iter 81 is: -76896.4350306 
## The loglikelihood after iter 82 is: -76911.1798535 
## The loglikelihood after iter 83 is: -76919.177639 
## The loglikelihood after iter 84 is: -76918.8363086 
## The loglikelihood after iter 85 is: -76910.9635722 
## The loglikelihood after iter 86 is: -76907.7837978 
## The loglikelihood after iter 87 is: -76905.8767345 
## The loglikelihood after iter 88 is: -76897.9474656 
## The loglikelihood after iter 89 is: -76920.4492698 
## The loglikelihood after iter 90 is: -76921.628199 
## The loglikelihood after iter 91 is: -76903.9297859 
## The loglikelihood after iter 92 is: -76912.2077432 
## The loglikelihood after iter 93 is: -76914.7090127 
## The loglikelihood after iter 94 is: -76897.1083166 
## The loglikelihood after iter 95 is: -76900.4647349 
## The loglikelihood after iter 96 is: -76904.8332381 
## The loglikelihood after iter 97 is: -76914.692293 
## The loglikelihood after iter 98 is: -76888.3861866 
## The loglikelihood after iter 99 is: -76900.7082118 
## The loglikelihood after iter 100 is: -76919.9005907
##    user  system elapsed 
## 150.410  55.756  68.514

We plot the radial plots first.

library(plotrix)
library(RColorBrewer)
radial.plot(lengths=1:length(out_sinusoidal$cell_times),radial.pos=out_sinusoidal$cell_times[order(cell_times_reorder)],
            line.col=colorRampPalette(brewer.pal(9,"Blues"))(length(out_sinusoidal$cell_times)), lwd=2)

We plot the patterns for two genes (for arbitrary indices)

plot(cycle_data_reorder[order(out_sinusoidal$cell_times),1], type="l")

plot(cycle_data[,1], type="l")

plot(cycle_data_reorder[order(out_sinusoidal$cell_times),60], type="l")

plot(cycle_data[,60], type="l")

Now we rank the cells based on the cell times estimated from sinusoidal cellcycleR and then plot the ranks against the ranks based on the first PC.

plot(rank(out_sinusoidal$cell_times), rank(pca_cycle$x[,1]), xlab="sin. cellcycleR rank", ylab="pca 1 rank", pch=20, lwd=0.5, cex=1, col="red")

plot(rank(out_sinusoidal$cell_times), rank(pca_cycle$x[,2]), xlab="sin. cellcycleR rank", ylab="pca 2 rank", pch=20, lwd=0.5, cex=1, col="red")